/* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*
* AION - sterownik czasowo temperaturowy
* http://code.google.com/p/aions
*
* Copyright (C) 2014 Piotr Murawski
*
* Niniejszy program jest wolnym oprogramowaniem; mozesz go
* rozprowadzac dalej i/lub modyfikowac na warunkach Powszechnej
* Licencji Publicznej GNU, wydanej przez Fundacje Wolnego
* Oprogramowania - wedlug wersji 3-ciej tej Licencji lub którejs
* z pozniejszych wersji.
*
* Autor, NIE UDZIELA zgody na wykorzystanie, calosci lub jakiej
* kolwiek czesci niniejszego oprogramowania, czy to w postaci
* kodu zrodlowego czy tez, bibliotek, plikow wykonywalnych czy tez
* innej formy pochodnej plikow zrodlowych do CELOW KOMERCYJNYCH.
*
* Niniejszy program rozpowszechniany jest z nadzieja iz bedzie on
* uzyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyslnej
* gwarancji PRZYDATNOSCI HANDLOWEJ albo PRZYDATNOSCI DO OKRESLONYCH
* ZASTOSOWAN. W celu uzyskania blizszych informacji - Powszechna
* Licencja Publiczna GNU.
*
* Z pewnoscia wraz z niniejszym programem otrzymales tez egzemplarz
* Powszechnej Licencji Publicznej GNU (GNU General Public License);
* jesli nie - napisz do Free Software Foundation, Inc., 675 Mass Ave,
* Cambridge, MA 02139, USA.
*
* Powszechna Licencja GNU znajduje sie w zalaczonym pliku:
* Licencja.txt
*
* Powszechna Licencja GNU dostepna jest rowniez na stronie:
* http://www.gnu.org/licenses/licenses.html
*
* nieoficjalne polskie tlumaczenie na
* http://www.gnu.org.pl
*
* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*
* AION - time temperature controller
* http://code.google.com/p/aions
*
* Copyright (C) 2014 Piotr Murawski
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Autor, doea not allow to use this software, as whole or in parts, in form 
* of source code or compiled code for COMMERCIAL USE.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/



        .include "stack_sizes.inc"
        .extern __stack_end__
        .globl ST_SVC_Stack_Size
        .globl ST_IRQ_Stack_Size
        .globl ST_USR_Stack_Size
        .globl ST_FIQ_Stack_Size
        .globl ST_ABT_Stack_Size
        .globl SVC_Stack_Top
        .globl IRQ_Stack_Top
        .globl USR_Stack_Top
        .globl FIQ_Stack_Top
        .globl ABT_Stack_Top

        .globl Asm_CpuRegs


.set SVC_Stack_Offset, 0
.set IRQ_Stack_Offset, SVC_Stack_Offset+SVC_Stack_Size
.set USR_Stack_Offset, IRQ_Stack_Offset+IRQ_Stack_Size
.set FIQ_Stack_Offset, USR_Stack_Offset+USR_Stack_Size
.set ABT_Stack_Offset, FIQ_Stack_Offset+FIQ_Stack_Size
.set UND_Stack_Offset, ABT_Stack_Offset+ABT_Stack_Size


	.text
.section .stack_const,"ax"
	.code 32
	.align  0
	

ST_SVC_Stack_Size:
        .word   SVC_Stack_Size
ST_IRQ_Stack_Size:
        .word   IRQ_Stack_Size
ST_USR_Stack_Size:
        .word   USR_Stack_Size
ST_FIQ_Stack_Size:
        .word   FIQ_Stack_Size
ST_ABT_Stack_Size:
        .word   ABT_Stack_Size
ST_UND_Stack_Size:
        .word   UND_Stack_Size


SVC_Stack_Top:
        .word   __stack_end__ - SVC_Stack_Offset
IRQ_Stack_Top:
        .word   __stack_end__ - IRQ_Stack_Offset
USR_Stack_Top:
        .word   __stack_end__ - USR_Stack_Offset
FIQ_Stack_Top:
        .word   __stack_end__ - FIQ_Stack_Offset
ABT_Stack_Top:
        .word   __stack_end__ - ABT_Stack_Offset


Asm_CpuRegs:
#     store SP
     STR      r13,[r1,#0]
#     store CPSR
     MRS      r1,CPSR
     STR      r1,[r0,#0]
     BX       r14

